home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 44
/
Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso
/
Aminet
/
game
/
patch
/
WHDIGamesJ-M.lzh
/
Lionheart.lha
/
Lionheart
/
lionheartslave.asm
< prev
next >
Wrap
Assembly Source File
|
1998-01-06
|
5KB
|
230 lines
;*---------------------------------------------------------------------------
; :Program. lionheartslave.asm
; :Contents. Slave for "Lionheart"
; :Author. Harry
; :History. 21.10.1998/18.11.1998/25.11.1998/3.11.2000/21.1.2001
; :Requires. whdload-package :)
; :Copyright. Freeware
; :Language. 68000 Assembler
; :Translator. ASM-One 1.25
; :To Do.
;---------------------------------------------------------------------------*
crc_v1 = $8DA1 ;MY
crc_v2 = $C2EF ;OTHER
V_1 = 1
V_2 = 2
fmemsize = $8C000
IFND BARFLY
INCDIR asm-one:Include2.0/
INCLUDE LIBRARIES/DOS_LIB.I
INCLUDE LIBRARIES/DOS.I
INCLUDE EXEC/EXEC_LIB.I
INCLUDE EXEC/MEMORY.I
INCLUDE GRAPHICS/GRAPHICS_LIB.I
INCLUDE INTUITION/INTUITION_LIB.I
INCLUDE INTUITION/INTUITION.I
INCLUDE OWN/CCRMAKRO
INCLUDE own/whdload.i
ELSE
INCDIR Includes:
INCLUDE lvo/dos.i
INCLUDE lvo/exec.i
INCLUDE whdload.i
BOPT O+ OG+ ;enable optimizing
BOPT ODd- ODe- ;disable mul optimizing
BOPT w4- ;disable 64k warnings
SUPER ;disable supervisor warnings
OUTPUT wart:a-c/anotherworld/anotherworld.slave
ENDC
;======================================================================
SLBASE SLAVE_HEADER ;ws_Security + ws_ID
dc.w 10 ;ws_Version
dc.w WHDLF_Disk!WHDLF_NoError!WHDLF_EmulTrap ;ws_flags
dc.l $94000 ;ws_BaseMemSize
dc.l $00 ;ws_ExecInstall
dc.w SLStart-SLBASE ;ws_GameLoader
dc.w 0 ;ws_CurrentDir
dc.w 0 ;ws_DontCache
dc.b $00 ;debugkey
qkey dc.b $5D ;quitkey
fmemloc DC.L fmemsize ;fastmem
dc.w slname-SLBASE
dc.w slcr-SLBASE
dc.w slinst-SLBASE
***********************************************************************
slname dc.b 'Lionheart',0
slcr dc.b '1993 Thalion',0
slinst dc.b 'HD-V1.22 Jan. 2001 by Harry',0
even
;======================================================================
; DOSCMD "WDate >T:date"
dc.b "$VER: Lionheart_Slave_1.22"
; INCBIN "T:date"
dc.b 0
even
;======================================================================
SLStart ; A0 = resident loader
;======================================================================
lea _RESLOAD(PC),a1
move.l a0,(a1) ;save for later using
move.l #CACRF_EnableI,d0 ;enable instruction cache
move.l d0,d1 ;mask
jsr (resload_SetCACR,a0)
; LEA.L $800,a0
; MOVE.L #$7E800,D0
;.CLR CLR.L (A0)+
; SUBQ.L #4,D0
; BPL.S .CLR
MOVE.L _resload(PC),A2
MOVE.L #$4000,D0
MOVEQ.L #0,D1
LEA.L STFILE(PC),A0
LEA.L $82000,A1
JSR (resload_LoadFileOffset,a2)
MOVE.L #$4000,D0
LEA.L $82000,A0
jsr (resload_CRC16,a2)
; illegal
LEA.L VERSION(PC),A0
CMP.W #CRC_V1,D0
BEQ.S .V1
CMP.W #CRC_V2,D0
BEQ.W .V2
BRA.W NOTSUPP
.V1 MOVE.B #V_1,(A0)
bra.s .VA
.V2 MOVE.B #V_2,(A0)
.VA
MOVE.L #$10000,D0 ;LEN
LEA.L $80000,A1 ;ADDY
LEA.L OSMNAME(PC),A0 ;FILENAME
move.l _RESLOAD(PC),a2
jsr (resload_LoadFileDecrunch,a2)
.xxx
; btst #6,$bfe001
; BNE.S .xxx
move.l fmemloc(PC),$80000+36
move.l #fmemsize,$80000+40
MOVE.L _RESLOAD(PC),A0
LEA.L SLBASE(PC),A1
JSR $80000
MOVE.W #0,SR
SUB.L A1,A1
MOVE.L 4.W,A6
CLR.W $128(A6) ;clear attnflags due many vbr-
;and cacr-accesses on 68010+
JSR _LVOFindTask(A6)
MOVE.L D0,A1
; CLR.L $AC(A1)
CLR.L $98(A1)
MOVE.L $4.W,A6
MOVEQ.L #0,D0
LEA DOSNAM(PC),A1
JSR _LVOOpenLibrary(A6)
MOVE.L D0,A6
LEA.L STFILE(PC),A0
MOVE.L A0,D1
JSR _LVOLoadSeg(A6)
LSL.L #2,D0
MOVE.L D0,A1
ADDQ.L #4,A1
;.YYY bra .YYY
MOVE.W #$6012,$222(A1) ;SKIP MEMLISTSTUFF
MOVE.B #$51,$236(A1) ;HM... FASTMEM?
MOVE.B VERSION(PC),D0
CMP.B #V_1,D0
BNE.S .PV2
;PATCHES SPECIFIC TO VERSION 1
MOVE.W #$C944,$246(A1) ;SKIP VBR-MOVE
MOVE.W #$C944,$11E2(A1) ;SKIP DISK-DIR-CHECK
MOVE.L #$1A1C6,D0 ;REMOVE ACCESS FAULT
MOVE.W #$4EB9,(A1,D0.L)
PEA CORRAF(PC)
MOVE.L (A7)+,2(A1,D0.L)
CLR.W $A(A1,D0.L) ;make lea (a0,d0._W_),a0
BRA.S .PVE
.PV2 ;PATCHES SPECIFIC TO VERSION 2
MOVE.W #$C944,$124E(A1) ;SKIP DISK-DIR-CHECK
MOVE.L #$1A25C,D0 ;REMOVE ACCESS FAULT
MOVE.W #$4EB9,(A1,D0.L)
PEA CORRAF(PC)
MOVE.L (A7)+,2(A1,D0.L)
CLR.W $A(A1,D0.L) ;make lea (a0,d0._W_),a0
.PVE
SUB.L A0,A0 ;NO COMMANDLINEARGUMENTS
MOVEQ.L #0,D0
IFEQ 1 ;FORCE NMI FOR HRTMON
MOVE.W #$2700,SR
MOVE.L #$007C0020,-(A7)
PEA .CONT(PC)
MOVE.W #$2000,-(A7)
JMP $68FCEF4C
ENDC
.CONT JSR (A1)
ILLEGAL
CORRAF
MOVEQ.L #0,D0
MOVE.W $1C(A5),D0
AND.W #$FFF,D0
RTS
version dc.w 0 ;version of disks
_RESLOAD dc.l 0 ;address of resident loader
OSMNAME DC.B 'OSEMUMODULE80000.BIN',0
EVEN
STFILE DC.B 'lionheart',0
EVEN
DOSNAM DC.B 'dos.library',0
EVEN
NOTSUPP
PEA TDREASON_WRONGVER
move.l (_resload,pc),-(a7)
add.l #resload_Abort,(a7)
rts